package cn.ppwx.crm.common.utils;

import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class EncryptKit {

	/**
	 * 加密密码
	 * @param str
	 * @return
	 */
	public static String Encrypt(String str){
		BASE64Encoder encoder = new BASE64Encoder();
		String encodeResult = encoder.encode(StrKit.trim(str).getBytes());//加密
		return encodeResult;
	}
	/**
	 * 解密
	 * @param encodeStr
	 * @return
	 * @throws IOException
	 */
	public static String decode(String encodeStr) throws IOException{
		BASE64Decoder bd = new BASE64Decoder();
		byte[] sorData = bd.decodeBuffer(encodeStr);

		String decodeResult = new String(sorData);
		return decodeResult;
	}


	/**
	* 1.对文本进行32位小写MD5加密
	* @param text 要进行加密的文本
	* @return 加密后的内容
	*/
	public static String textToMD5(String text){
		String result = null;
		//首先判断是否为空
		if(StrKit.isEmpty(text)){
			return null;
		}
		try{
			//首先进行实例化和初始化
			MessageDigest md = MessageDigest.getInstance("MD5");
			//得到一个操作系统默认的字节编码格式的字节数组
			byte[] btInput = text.getBytes();
			//对得到的字节数组进行处理
			md.update(btInput);
			//进行哈希计算并返回结果
			byte[] btResult = md.digest();
			//进行哈希计算后得到的数据的长度
			StringBuffer sb = new StringBuffer();
			for(byte b : btResult){
				int bt = b&0xff;
				if(bt<16){
					sb.append(0);
				}
				sb.append(Integer.toHexString(bt));
			}
			result = sb.toString();
		}catch(NoSuchAlgorithmException e){
			e.printStackTrace();
		}
		return result;
	}

	/**
	* 2.对文本进行32位MD5大写加密
	* @param plainText 要进行加密的文本
	* @return 加密后的内容
	*/
	public static String textToMD5U(String text){
		if(StrKit.isEmpty(text)){
			return null;
		}
		String result = textToMD5(text);
		return result.toUpperCase();
	}

	public static void main(String[] args){
		String test="token_key_play_mate_prod";
		System.out.println(textToMD5(test));
		System.out.println(textToMD5U(test));
	}
}
